home *** CD-ROM | disk | FTP | other *** search
- /*
- File: Layers.h
-
- Copyright: © 1983-1993 by Apple Computer, Inc.
- All rights reserved.
-
- Version: System 7.1
- Created: Thursday, April 28, 1989 18:00
-
- */
-
- #pragma once
-
- #ifndef __LAYERS__
- #define __LAYERS__
-
- #ifndef __TYPES__
- #include <Types.h>
- /* #include <ConditionalMacros.h> */
- /* #include <MixedMode.h> */
- /* #include <Traps.h> */
- #endif
-
- #ifndef __QUICKDRAW__
- #include <Quickdraw.h>
- /* #include <QuickdrawText.h> */
- /* #include <IntlResources.h> */
- #endif
-
- enum {
- kLayerUnk1 = 1,
- kLayerUnk2,
- kLayerGetFirstLayer,
- kLayerUnk4,
- kLayerUnk5,
- kLayerGetFirstLayerWindow,
- kLayerGetLayerForPSN
- };
-
-
- enum {
- /* result codes from PortType */
- layerPort = 0,
- grafPort = 1
- };
-
- enum {
- /* relative positioning (pRelative) codes for AutoPosition routines */
- apMainScreen = 0,
- apParentWindowScreen = 1,
- apParentWindow = 2,
- /* position vertical/horizontal (pVertical/pHorizontal) codes for AutoPosition routines */
- apNone = 0,
- apCenter = 1,
- /* additional position vertical (pVertical) codes for AutoPosition routines */
- apAlert = 2,
- apStagger = 3
- };
-
- #define kFromTheFirst (GrafPtr) -1
- #define kToTheLast (GrafPtr) -1
- #define kThisLayerSubtreeOnly (GrafPtr) 0
-
- enum {
- /* result codes from LayerDoProcPtr */
- layerDoGoRight = 700, /* don't traverse down the Layer tree */
- layerDoHalt = 701 /* don't traverse any more (only seen on occasion) */
- };
-
- typedef GrafPtr LayerPtr;
-
- typedef pascal short (*LayerDoProcPtr)(GrafPtr thePort, LayerPtr parent, void *yourDataPtr);
-
- typedef struct LayerRecord LayerRecord;
- typedef LayerRecord *LayerPeek;
-
- #if defined(powerc) || defined (__powerc)
- #pragma options align=mac68k
- #endif
- struct LayerRecord {
- GrafPort port;
- short windowKind;
- Boolean visible;
- Boolean reserved1;
- Boolean neverActive;
- Boolean reserved2;
- RgnHandle strucRgn;
- RgnHandle contRgn;
- RgnHandle updateRgn; // documented as reserved3
- Handle windowDefProc; // documented as reserved4
- LayerPtr parent;
- AuxWinHandle auxWinHead; // documented as reserved5
- short reserved6;
- AuxCtlHandle auxCtlHead; // documented as reserved7
- LayerPeek nextWindow;
- WindowPeek subWindows;
- long refCon;
- };
- #if defined(powerc) || defined(__powerc)
- #pragma options align=reset
- #endif
-
- typedef struct WState WState;
- typedef WState *WStatePtr, **WStateHndl;
-
- #if defined(powerc) || defined (__powerc)
- #pragma options align=mac68k
- #endif
- struct WState {
- short version;
- Rect rect;
- Boolean zoom;
- };
- #if defined(powerc) || defined(__powerc)
- #pragma options align=reset
- #endif
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- /* returns portRect in global coordinates */
- extern pascal void PortRectGlobal(GrafPtr thePort, Rect *theRect)
- TWOWORDINLINE (0x70F6, 0xA829);
- /* parent = if nil then if begin is nil or kFromTheFirst use current layer else use begin's parent
- * end = if kThisLayerSubtreeOnly use parent (will only traverse subtree), if kToTheLast use end-of-list (nil)
- * begin = if nil or kFromTheFirst use parent's first child
- */
- extern pascal short ForEachPortDo(GrafPtr begin, GrafPtr end, LayerPtr parent, LayerDoProcPtr doProc, void *yourDataPtr)
- TWOWORDINLINE (0x70F8, 0xA829);
- /* get parent layer for the layer/window */
- extern pascal LayerPtr GetParentLayer(GrafPtr thePort)
- TWOWORDINLINE (0x70F9, 0xA829);
- /* returns the type of port */
- extern pascal short PortType(GrafPtr thePort)
- TWOWORDINLINE (0x70FA, 0xA829);
- extern pascal OSErr GetDeskPort(GrafPtr *deskPort)
- TWOWORDINLINE (0x70FB, 0xA829);
- extern pascal Boolean CheckUpdateInLayer(EventRecord *theEvent, LayerPtr theLayer)
- TWOWORDINLINE (0x70FC, 0xA829);
- /* returns top window in layer which is not a floater */
- extern pascal WindowPtr GetSelectable(LayerPtr theLayer)
- TWOWORDINLINE (0x70FD, 0xA829);
- /* returns top window in current layer(s) which is not a floater */
- extern pascal WindowPtr GetFrontWindow(void)
- TWOWORDINLINE (0x70FE, 0xA829);
- /* returns the supreme parent layer */
- extern pascal LayerPtr GetRootLayer(void)
- TWOWORDINLINE (0x70FF, 0xA829);
- extern pascal void InitLayers(void)
- TWOWORDINLINE (0x7000, 0xA829);
- /* theLayer is the storage to hold the new layer. if zero storage it is allocated via NewPtr */
- extern pascal OSErr NewLayer(LayerPtr *theLayer, Boolean visible, Boolean neverActive, WindowPtr behind, long refCon)
- TWOWORDINLINE (0x7001, 0xA829);
- extern pascal Boolean IsLayer(GrafPtr thePort)
- TWOWORDINLINE (0x7002, 0xA829);
- extern pascal LayerPtr GetCurLayer(void)
- TWOWORDINLINE (0x7003, 0xA829);
- extern pascal void SetCurLayer(LayerPtr theLayer)
- TWOWORDINLINE (0x7004, 0xA829);
- extern pascal LayerPtr SwapCurLayer(LayerPtr theLayer)
- TWOWORDINLINE (0x7005, 0xA829);
- /* simply returns the first port in layer */
- extern pascal GrafPtr GetFirstPort(LayerPtr theLayer)
- TWOWORDINLINE (0x7006, 0xA829);
- /* returns FindWindow result codes */
- extern pascal short FindWindowCurLayer(WindowPtr *whichWindow, Point where)
- TWOWORDINLINE (0x7007, 0xA829);
- /* if useDevice is true position will be relative screen that intersects theRect */
- extern pascal void AutoPositionPortInRect(GrafPtr thePort, Rect *theRect, Boolean useDevice, Byte pVertical, Byte pHorizontal)
- TWOWORDINLINE (0x7008, 0xA829);
- extern pascal void AutoPositionPort(GrafPtr thePort, Byte pRelative, Byte pVertical, Byte pHorizontal)
- TWOWORDINLINE (0x7009, 0xA829);
- /* theSize can be nil inwhich case the size is not returned */
- extern pascal OSErr GetWindowState(WindowPtr theWindow, WStateHndl theState, long *theSize)
- TWOWORDINLINE (0x700A, 0xA829);
- extern pascal OSErr SetWindowState(WindowPtr theWindow, WStateHndl theState)
- TWOWORDINLINE (0x700B, 0xA829);
- extern pascal void InvalAllLayers(void)
- TWOWORDINLINE (0x700D, 0xA829);
-
- extern pascal void UnknownLayer_9(LayerPtr, RgnHandle)
- TWOWORDINLINE (0x70F7, 0xA829);
- extern pascal Boolean UnknownLayer12(LayerPtr, Byte, Byte)
- TWOWORDINLINE (0x700C, 0xA829);
-
- /* nice routine definitions (documented as working with LayerPtr) */
- #define HiddenLayer(theLayer) (((LayerPeek)theLayer)->visible)
-
- #define CloseLayer(theLayer) CloseWindow(theLayer)
- #define DisposeLayer(theLayer) DisposeWindow(theLayer)
- #define SelectLayer(theLayer) SelectWindow(theLayer)
- #define HideLayer(theLayer) HideWindow(theLayer)
- #define ShowLayer(theLayer) ShowWindow(theLayer)
- #define ShowHideLayer(theLayer, showFlag) ShowHide(theLayer, showFlag)
- #define BringLayerToFront(theLayer) BringToFront(theLayer)
- #define SendLayerBehind(theLayer, behindPort) SendBehind(theLayer, behindPort)
- #define SetLRefCon(theLayer, newRef) SetWRefCon(theLayer, newRef)
- #define GetLRefCon(theLayer) GetWRefCon(theLayer)
-
- #define LayerClipAbove(theLayer) ClipAbove(theLayer)
- #define LayerSaveOld(theLayer) SaveOld(theLayer)
- #define LayerDrawNew(theLayer, updateFlag) DrawNew(theLayer, updateFlag)
- #define LayerPaintOne(theLayer, badRgn) PaintOne(theLayer, badRgn)
- #define LayerPaintBehind(theLayer, badRgn) PaintBehind(theLayer, badRgn)
- #define LayerCalcVis(theLayer) CalcVis(theLayer)
- #define LayerCalcVisBehind(theLayer, badRgn) CalcVisBehind(theLayer, badRgn)
-
- #ifdef __cplusplus
- }
- #endif
-
- // Prototypes
- LayerPtr FindLayerForSignature(OSType processSig);
- WindowPtr GetFrontWindowForSignature(OSType processSig);
- LayerPtr FindLayerForPSN(ProcessSerialNumber *psn);
- LayerPtr ProcessLayer( ProcessSerialNumber *psn );
-
-
- #endif